package bitclub;

import herramientas.BitUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.PTrabajador;

/**
 * @author BIT COMPANY
 */
public class Trabajador extends Persona {

    //Atributos de la clase
    private boolean administrador;
    private int id;

    public Trabajador(String nombre, String apellidos, String dni, boolean activo, String mail, String tel_fijo, String tel_movil, String direccion, String codigoPostal, String localidad, Date nacimiento, char sexo, Date fechaAlta, Date fechaBaja, String password, boolean administrador, int id) {
        super(nombre, apellidos, dni, activo, mail, tel_fijo, tel_movil, direccion, codigoPostal, localidad, nacimiento, sexo, fechaAlta, fechaBaja, password);
        this.administrador = administrador;
        this.id = id;
    }

    public Trabajador(String nombre, String apellidos, String dni, boolean activo, String mail, String tel_fijo, String tel_movil, String direccion, String codigoPostal, String localidad, Date nacimiento, char sexo, Date fechaAlta, Date fechaBaja, String password, boolean administrador) {
        super(nombre, apellidos, dni, activo, mail, tel_fijo, tel_movil, direccion, codigoPostal, localidad, nacimiento, sexo, fechaAlta, fechaBaja, password);
        this.administrador = administrador;
        this.id = -1;
    }
    
    //Constructor vacío para usar en la capa de persistencia
    public Trabajador(){
        super();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public boolean isAdministrador() {
        return administrador;
    }

    public void setAdministrador(boolean administrador) {
        this.administrador = administrador;
    }

    @Override
    public String toString() {
        //En esta variable vamos a concatenar todos los atributos de nuestro Cliente
        String resultado = "";

        resultado += "________________________________________________________________\n";
        //Si acabamos de crear el cliente podemos mostrarlo para confirmarlo, entonces el id será -1
        if (this.getId() == -1) {
            resultado += "      " + this.getNombre() + ", " + this.getApellidos() + " (DNI " + this.getDni() + ")\n";
        } else {
            resultado += "   [Num." + this.getId() + "]  " + this.getNombre() + ", " + this.getApellidos() + " (DNI " + this.getDni() + ")\n";
        }
        resultado += "________________________________________________________________\n";

        resultado += "Dirección:        " + this.getDireccion();
        if (this.getCodigoPostal().length() > 0) {
            resultado += ", CP " + this.getCodigoPostal();
        }
        if (this.getLocalidad().length() > 0) {
            resultado += ", " + this.getLocalidad();
        }
        resultado += "\n";

        if (this.getSexo() == 'h') {
            resultado += "Sexo:             Hombre\n";
        } else {
            resultado += "Sexo:             Mujer\n";
        }
        resultado += "Fecha Nacimiento: " + BitUtil.muestraFecha(this.getNacimiento()) + "\n";

        if (this.getMail().length() > 0) {
            resultado += "E-mail:           " + this.getMail() + "\n";
        }
        if (this.getTel_fijo().length() > 0) {
            resultado += "Tel. Fijo:        " + this.getTel_fijo() + "\n";
        }
        if (this.getTel_movil().length() > 0) {
            resultado += "Tel. Movil:       " + this.getTel_movil() + "\n";
        }
        resultado += "Fecha Alta:       " + BitUtil.muestraFecha(this.getFechaAlta()) + "\n";

        resultado += "________________________________________________________________\n";

        if(this.isAdministrador()){
            resultado += "                  ADMINISTRADOR\n";
        }else{
            resultado += "                  SIN PRIVILEGIOS DE ADMINISTRACION\n";
        }
        resultado += "________________________________________________________________\n";


        if (this.getFechaBaja() != null && this.isActivo() == false) {
            resultado += "                  EL TRABAJADOR FUE DADO DE BAJA\n";
            resultado += "Fecha Baja:       " + BitUtil.muestraFecha(this.getFechaBaja()) + "\n";
        }

        resultado += "\n\n";
        return resultado;

    }

    public String toStringLinea() {
        BitUtil.borra();
        String resultado = "";
        resultado += "________________________________________________________________\n";
        resultado += "   [Num." + this.getId() + "]  " + this.getNombre() + ",  " + this.getApellidos() + " (DNI " + this.getDni() + ")\n";
        resultado += "________________________________________________________________\n";
        return resultado;
    }

    public void nuevo() {
        PTrabajador.nuevoBD(this);
    }

    public void actualizar() {
        //Llamamos a la capa de persistencia. Paquete persistencia, Clase PTrabajador
        PTrabajador.actualizarBD(this);
    }

    public static Trabajador seleccionarPorDni(String dni) {
        Trabajador trabajador;        
        trabajador = PTrabajador.seleccionarPorDniBD(dni);
        return trabajador;
    }

    public static List<Trabajador> seleccionarPorNombre(String nombre) {
        List<Trabajador> trabajador = new ArrayList();
        trabajador = PTrabajador.seleccionarPorNombreBD(nombre);
        return trabajador;
    }
    
    public static Trabajador seleccionarPorId(int id) {
        Trabajador trabajador;        
        trabajador = PTrabajador.seleccionarPorIdBD(id);
        return trabajador;
    }
}
